if 條件一:
程式碼區塊一
elif 條件二:
程式碼區塊二
else:
程式碼區塊三
實作程式碼:
若輸入的數為正數,絕對值為本身,可以直接輸出;若輸入的數為負數,可用先前學過的 abs() 函數來求得負數的絕對值:
實作程式碼:
若某數除以2的餘數為0,則可被判斷為偶數;若餘數不為0,則可被判斷為奇數:
藉由上述的奇偶數特性,結合布林值的應用,餘數0的0會被視為False值,應被放在 else 的條件(此時為偶數);而餘數不為0則會被視為True值,應被放在 if 的條件(此時為奇數)。實作如下:
輸出結果:
條件一:可以被4整除。若條件一成立,還需要符合條件二:除以100時餘數不為0或除以400時餘數為0,兩個條件都符合才算是閏年。
以下是 20 世紀和 21 世紀所有閏年的表格:
20世紀閏年 | 21世紀閏年 |
---|---|
1904 | 2000 |
1908 | 2004 |
1912 | 2008 |
1916 | 2012 |
1920 | 2016 |
1924 | 2020 |
1928 | 2024 |
1932 | 2028 |
1936 | 2032 |
1940 | 2036 |
1944 | 2040 |
1948 | 2044 |
1952 | 2048 |
1956 | 2052 |
1960 | 2056 |
1964 | 2060 |
1968 | 2064 |
1972 | 2068 |
1976 | 2072 |
1980 | 2076 |
1984 | 2080 |
1988 | 2084 |
1992 | 2088 |
1996 | 2092 |
2096 |
實作程式碼:
題目寫得很清楚閏年的條件為何,第一個一定要遵守的規定是它是4的倍數,因此能理解為除以4的餘數為0。
第一個規定有遵守的話,按照題目需要再判斷是否不為100的倍數、或為400的倍數,若符合前述其中一種情況,則為閏年。需要注意的是還需要添加一個else條件,若它不符合[不為100的倍數、或為400的倍數]這個條件,比方說它為100的倍數,這樣就要輸出此年不為閏年。
我有因為忘記這個條件導致程式出現錯誤,所以需要特別注意所有可能發生的情況!
輸出結果:
要求使用者輸入身高體重,然後計算BMI指數,並由BMI指數判斷體重是否正常。
(BMI = 體重(公斤) / 身高^2(公尺))
分類 | BMI 範圍 |
---|---|
體重過輕 | BMI < 18.5 |
正常 | 18.5 <= BMI < 24 |
超重 | 24 <= BMI < 28 |
肥胖 | BMI >= 28 |
實作程式碼:
如果是要判斷是否正常,可以把條件分成正常和不正常。正常的情況只有一個,只需要查表確定範圍就好。不正常的情況是:體重過輕、超重、肥胖,但因為已經知道了正常的條件,所以不需要再把這三個不正常情況的範圍分別寫出來,僅需要當作正常條件的例外,放在else就可以輕鬆解決了!
輸出結果:
讓使用者輸入三個邊長,判斷這三條邊是否能構成三角形。如果能,進一步判斷是正三角形、等腰三角形,還是一般三角形。(三角形成立的條件是任意兩邊之和大於第三邊。)
實作程式碼:
這題主要是要判斷三邊是否能構成三角形的條件 該怎麼寫?因為三角形的成立條件是任意兩邊和>第三邊,所以要記得寫出a、b、c邊比大小的三種情況,我一開始只寫了 a + b > c 而已,導致後面判斷時會出現錯誤。
基於這個重點,等腰三角形也是需要寫三個條件的,同樣也是a、b、c邊兩腰互相等於的情況有三種,需要特別注意~
輸出結果:
讓使用者輸入三個數字,並找出這三個數中的最大值和最小值。
(不能使用內建的 max() 和 min() 函數。)
實作程式碼:
這題我真的想很~~久,可能是因為它沒有題目上看起來得這麼簡單。最後我的方法是把條件
分為兩大部分,一個是找最大值、一個是找最小值。
首先是找最大值,從 a 開始,和 b、c 依序比大小,並且在條件裡面加入新的函數 max_val 來放入比大小勝出的數值。順序是 a、b 先比,再來比 a、c ,最後再比 b、c ,主要是需要思考 if 和 else 的條件要放什麼,而且所有情況都需要考慮到,經過比較過後是誰會被放到 max_val 裡,容易搞混,所以這時有體會到註解的重要性><
再來是找最小值,和找最大值的比較步驟一樣,是 a、b 先比,再來比 a、c ,最後再比 b、c ,因為在找最大數時試錯了好多遍,最後找出了不會出錯的方法,所以可以同樣套用在找最小值的判斷上,只需要把比較小的值放到 min_val 裡就好,是不是很簡單!不需要再用別的思路,只需要記得比大小的結果是選小的那個。
最後就會產生最大值 max_val 和最小值 min_val啦~然後再輸出就行了。
輸出結果:
今天的話沒有學新的概念,倒是訓練了一波解題邏輯><
有別於平常用於理解概念的簡單練習題,為了更熟悉這種條件判斷的情境,今天選了書上的小專題來做。
我覺得每天的實作部分都特別有趣,不管是難度如何的題目。自己動腦寫完之後再透過文字紀錄學到的東西,
然後把自己寫的程式碼和執行結果截圖PO到網路上,因為會被其他讀者讀到所以感覺新奇又奇妙。
雖然我的學習進度很慢很慢,但每天都有更認識Python,之後應該也會保持這樣的步調(或速度更快一些)來學習,
希望我之後進入比較難的地方也可以學習的很順利!